package rootdb

import (
	"errors"

	"gitee.com/xiaoyutab/xgotool/optional/xcmd"
)

// 针对文件进行压缩
//
//	文件ID
func P7z(id int64) error {
	if id <= 0 {
		return errors.New("文件ID传输错误")
	}
	// 创建设备信息
	conn, err := Connect()
	if err != nil {
		return err
	}
	f := File{}
	err = conn.Table(f.TableName()).Where("id", id).Limit(1).Find(&f).Error
	if err != nil {
		return err
	}
	if f.Id <= 0 {
		return errors.New("文件未找到")
	}
	if f.Path7z != "" {
		return errors.New("文件已压缩")
	}
	if f.MinId == 0 || f.MaxId == 0 {
		return errors.New("该文件还未记录完成，暂无法压缩")
	}
	_, path := getNewName("")
	path, err = xcmd.Tar(path, []string{f.Path})
	if err != nil {
		return err
	}
	f.Path7z = path
	err = conn.Table(f.TableName()).Save(&f).Error
	if err != nil {
		return err
	}
	return nil
}
